草庐IT

c++ - SIMD C++ 库

全部标签

c++ - 外部链接的 C 库中的异常传播

我正在编写一个使用外部第三方C库的C++库。所以我的库将调用这个第三方库中的函数,而第三方库将回调到我的库的不同部分。我想知道在这种情况下异常会发生什么?假设MyLib::foo()调用外部C库函数,最终调用MyLib::bar(),bar抛出异常,会发生什么?异常是否会正确传播到foo()中的处理程序?谢谢! 最佳答案 Willtheexceptionbecorrectlypropagatedtoahandlerinfoo()?我认为异常是否通过外部C代码传播是未定义的。更糟糕的是,C代码毫无准备,无法处理异常。C代码不需要免疫突

c++ - 具有自由许可的跨平台 Gui 库

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正在寻找可用于创建对话框的跨平台图形用户界面库,它必须符合以下要求:用C或C++编写。至少与Windows、Mac和Linux兼容。相对成熟。在以编译形式分发的衍生作品文档中不需要版权文本的许可下。好的许可证示例包括Zlib/libpng许可证、Boost软件许可证,当然还有公共(public)域。无法使用的许可证包括LGPL、BSD、MIT等。有人有什么建议吗?亲

c++ - 将 fpos_t 转换为 int 或 char

我正在使用一个对文件长度使用位运算的函数:fpos_tflen;当我尝试将其转换为int或char,或尝试对其进行算术运算时,它失败并出现以下编译错误:错误:在需要整数的地方使用了聚合值 最佳答案 您在滥用该类型。首先,它不代表长度。它代表一个位置。其次,它仅用于调用fsetpos。您不打算对其进行算术运算,因为它不一定代表数字类型。它包含您的库执行fsetpos操作所需的任何信息。在您的库的实现中,fpos_t似乎是一种聚合类型,例如结构。(您可以检查头文件中的定义以确保确定,但不要依赖您在那里发现的任何内容;它可能会在其他平台或

c# - IDE 条件 block 突出显示

设置:假设我有一个相当大的程序,并且正在使用#defines和各种包含/排除各种代码片段的方法。即假设我有一段这样的代码example_file.c:include#ifdefTHISdosomethingreallycoolhere#ifdefTHATdosomethingevencooler#endif#endif定义文件.c:#defineTHATTRUE#defineTHISFALSE现在我不知道这两个语句是否会被包含或使用,除非我查看定义。上面是一个简单的示例,但假设您有50个ifdef,并且它们以不同的方式嵌套,要追踪这50个值中的每一个值是什么有点麻烦。问题:是否存在一个

c++ - 从类返回指针。谁负责删除?

我有一个实现二进制兼容接口(interface)(用作共享库)的C++类,因此只返回C类型。作为constchar*的字符串、void指针和指向具有二进制兼容接口(interface)的其他类的指针。问题是我应该如何组织内存管理,我应该返回指向现有类数据的常量指针(用户使用过时指针的危险),然后自己释放内存,或者指向一些堆变量的指针并让用户负责删除这些指针后来,还是???是否有一些通用准则? 最佳答案 在“二进制兼容接口(interface)”中,使用C接口(interface),您不假设共享堆。因此,从堆中分配内存的一方是将其返回

c++ - Ubuntu 11.10 链接 perftools 库

我无法让Ubuntu11.10中的gcc在googleperftools-lprofiler中正确链接。问题似乎是链接器丢弃了程序中未直接使用的库。一个例子会有所帮助。我们称它为main.cpp:#includeintmain(){doublevalue;for(inti=0;i编译使用:g++-cmain.cpp-omain.og++main.o-omain-lm-lprofiler使用ldd./main检查可执行文件:linux-vdso.so.1=>(0x00007fff5a9ff000)libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x0

c++ - C 和 C++ 中的套接字解​​释

好吧,我一直想知道是否有用于C++的标准套接字头文件我搜索了整个互联网(使用谷歌搜索引擎),但找不到任何标准的C++套接字头文件,除了找到一些库,如Boost、chilkat等...我只成功地找到了C编程语言的标准套接字头文件。如果我使用C标准套接字头文件,但在我的C++代码中,这是否意味着我的程序是纯C++还是C和C++?因为我没有找到任何标准的C++套接字头文件。像有对于C++,有对于C,但没有套接字C++的标准头文件。我希望C/C++高手能一步一步地为我解释所有这些。 最佳答案 C++中没有标准的套接字库。您可以使用您的操作系

c++ - 在计算实验期间将结果写入文件的有效方法

我有一个软件可以执行一组实验(C++)。在不存储结果的情况下,所有实验都需要一分多钟。生成的数据总量等于2.5GB,这太大了,无法在内存中存储到实验结束并在之后写入文件。因此,我将它们分块编写。for(inti=0;i在哪里ofstream输出文件(“数据”);outfile只在最后关闭。然而,当我以4700KB的block(实际上4700/Chunksize=results_experiments元素的大小)的形式编写它们时,实验需要大约50倍的时间(一个多小时......)。这是NotAcceptable,并且使我之前的优化尝试看起来相当愚蠢。特别是因为这些实验再次需要使用许多不同

c++ - 是否可以在浏览器呈现之前拦截 http 请求并修改数据(例如使用正则表达式替换内容)?如果是这样,如何?

今天我偶然发现了Wireshark,它能够拦截您PC上的所有网络流量。我想知道是否可以在请求后修改数据(因此发送回PC的数据)并使用正则表达式修改它?就像在浏览器中呈现数据之前替换数据中的单词和模式一样?(示例:将“疯狂”一词替换为“快乐”或将整个网站替换为“停止拖延”)如果可能的话:我应该如何实现?哪些功能必不可少?是否有任何开源库可以帮助我完成此任务?在实现之前我应该​​先阅读什么内容?请注意,此平台将是Windows,我将尝试在C++中执行此操作 最佳答案 您可以使用WinDivert(LGPL)为此目的(免责声明:WinDi

c++ - 如何将 C++ 静态库链接到 C 程序?

我有以下C++程序:客户端.h#ifndefClient_Client_h#defineClient_Client_h#include"Client.h"classClient{public:voidf1();voidf2();};#endif客户端.cpp#include#includeusingnamespacestd;#include"Client.h"voidClient::f1(){cout在XCode4.3中编译上面的代码会得到一个名为的静态库文件:libClient.a另外,我有一个main.c#include////usingnamespacestd;intmain()